CGA is a special type of Internet Protocol version 6 (IPv6) address. An interface identifier in a CGA is generated by computing a cryptographic one-way hash algorithm from a public key and auxiliary information. When using a CGA, a receiver needs to re-compute a hash value, and compare the hash value with an interface identifier of a sender's CGA to verify the binding relation between a public key of the sender and the CGA. A network message can be protected by attaching the public key and auxiliary information into the message and signing the message with a corresponding private key. To increase the strength against attacks of a CGA, a 3-bit security parameter (SEC) is defined in the existing CGA data structure. The SEC represents the security grade of the CGA and the strength of the CGA is graded according to different SEC values. Furthermore, the SEC value is defined for selecting the Hash algorithm in the CGA algorithm. The CGA solution solves a problem that how to verify an address within the IP layer, and works without a certification authority or any other security infrastructure.
Because the CGA binds the public key of the CGA owner with the private key of the CGA owner, the CGA owner can use the private key to sign a message to be sent so as to make the source of the message to be verified and integrity of the message to be protected. A receiver of the message verifies the CGA and the signature of the message. The source and content of the message are proved to be reliable only if the verification of the CGA and the signature succeeds; if either of the verification fails, the whole verification procedure fails, and the source and content of the message are unreliable.
Ron-Shamir-Adleman (RSA) public key is a public key system invented by Ron-Shamir-Adleman, and can be used for signing in network communication for the purpose of verification. The strength against attacks of a key is required to be more and more intense in the network communication security, therefore the techniques of verifying and signing in CGA, which supports only RSA public key in the prior art, can hardly meet the current requirement. The techniques of verifying and signing in CGA are now on a trend of supporting development and application of multiple public keys. It is now urgent to work out a solution to identifying a public key and determining a public key in the process of verifying and signing in CGA that supports multiple public keys.